#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

/*

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                      void *(*start_routine) (void *), void *arg);
*/

// pthread_attr_t attr;
// int pthread_attr_init(pthread_attr_t *attr);
// int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
// int pthread_attr_destroy(pthread_attr_t *attr);

// int pthread_detach(pthread_t thread);
// pthread_t pthread_self(void);

void *start_routine(void *arg)
{
    sleep(3);
    printf("子线程 %d  线程号是%lu\n", *((int *)arg), pthread_self());
}

int main()
{
    int count = 1;
    printf("main 单个进程 的主线程\n");

    // 创建一个线程
    pthread_t thread;
    int res = pthread_create(&thread, NULL, start_routine, &count);
    pthread_detach(thread); // 设置了线程的分离属性
    printf("res=%d  thread=%lu\n", res, thread);

    // 设置分离属性的线程不需要pthread_join回收资源，但是进程退出了，该线程还是会退出的
    pthread_join(thread, NULL); // 不起效果不阻塞
    printf("xxx\n");
    sleep(10);
    return 0;
}
